'use strict';

const router = require('koa-router')();
const fs = require('fs');

// 1、遍历所有的路由定义文件，做相应处理
// 2、遍历所有的对象属性，做相应处理

// 获取所有路由定义文件
function getRouteFiles(filePath) {
    let tmpPath = filePath || __dirname;
    let files = fs.readdirSync(tmpPath);
    let routeFiles = files.filter(item => {
        return item.endsWith('.js') && item !== 'index.js';
    })
    return routeFiles;
}

// 注册所有引入模块的路由
function registryRoute(router, routeFiles) {
    routeFiles.forEach(item => {
        let tmpPath = __dirname + '/' + item;
        // console.log(tmpPath);
        let obj = require(tmpPath);
        for (let key in obj) {
            // 字符串分割两块元素
            let tmpArr=key.split(' ');
            let rMethod=tmpArr[0];
            let rPath = tmpArr[1];
            let rFunction = obj[key];
            if(rMethod==='get'){
                router.get(rPath,rFunction);
            }else if(rMethod==='post'){
                router.post(rPath,rFunction);
            }else if(rMethod==='put'){
                router.put(rPath,rFunction);
            }else if(rMethod==='delete'){
                router.delete(rPath,rFunction);
            }else{
                console.log('不正确的请求方法或路径');
            }
        }
    });
    return router.routes();
}


// 暴露一个函数，在函数中执行注册逻辑
module.exports = function () {

    let routeFiles = getRouteFiles();

    let fn = registryRoute(router, routeFiles);

    return fn;
};